package com.lm.thumbnailator.example;

import net.coobird.thumbnailator.Thumbnails;
import net.coobird.thumbnailator.geometry.Positions;
import net.coobird.thumbnailator.name.Rename;

import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.*;

public class ThumbnailatorExample {
    public static void main(String[] args) throws IOException {
        Thumbnails.of("D:\\tifToPdf\\Img\\ZH-1\\ZH-1-1\\input.jpg")
                .size(200, 200)
                .toFile("D:\\tifToPdf\\Img\\ZH-1\\ZH-1-1\\output.jpg");
        System.out.println("缩略图已生成！");

        //生成带质量控制的缩略图
        Thumbnails.of("input.jpg")
                .size(300, 300)
                .outputQuality(0.8)
                .toFile("output_quality.jpg");

        //裁剪图片
        Thumbnails.of("input.jpg")
                .sourceRegion(50, 50, 200, 200) // 裁剪区域
                .size(200, 200)
                .toFile("output_crop.jpg");

        //将图片转换为其他格式
        Thumbnails.of("input.jpg")
                .size(400, 400)
                .outputFormat("png")
                .toFile("output.png");

        //为图片添加水印
        BufferedImage watermark = ImageIO.read(new File("watermark.png"));
        Thumbnails.of("input.jpg")
                .size(500, 500)
                .watermark(Positions.BOTTOM_RIGHT, watermark, 0.5f) // 水印位置与透明度
                .toFile("output_watermark.jpg");

        //批量处理图片
        Thumbnails.of("img1.jpg", "img2.jpg", "img3.jpg")
                .size(200, 200)
                .toFiles(Rename.PREFIX_DOT_THUMBNAIL);

        //流式处理图片
        try (InputStream is = new FileInputStream("input.jpg");
             OutputStream os = new FileOutputStream("output_stream.jpg")) {
            Thumbnails.of(is)
                    .size(300, 300)
                    .toOutputStream(os);
        }

        //旋转图片
        Thumbnails.of("input.jpg")
                .size(400, 400)
                .rotate(90) // 顺时针旋转 90 度
                .toFile("output_rotate.jpg");
    }
}
